package com.feige.utils.qrcode;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import java.io.OutputStream;

/**
 * @description: 二维码工具类
 * @author: feige
 * @date: 2021/2/28 22:59
 */
public class QrCodeUtils {

    public static final int QR_CODE_WIDTH = 300;
    public static final int QR_CODE_HEIGHT = 300;
    public static final String IMAGE_TYPE = "jpg";

    /**
     *
     * @param w 二维码宽度
     * @param h 高度
     * @param content 内容
     * @param logoPath logo路径
     * @param imageType 图片类型
     * @param os 输出流
     * @return
     */
    public static boolean generateQrCode(int w,int h,String content, String logoPath,String imageType, OutputStream os){
        QrConfig config = new QrConfig(w,h);
        // 高纠错级别
        config.setErrorCorrection(ErrorCorrectionLevel.H);
        if (logoPath != null && !"".equals(logoPath)){
            config.setImg(FileUtil.file(logoPath));
        }
        if (StrUtil.isNotBlank(content)){
            QrCodeUtil.generate(content, config, imageType,os);
            return true;
        }else {
            return false;
        }
    }

    /**
     *
     * @param content 内容
     * @param logoPath logo路径
     * @param os 输出流
     */
    public static boolean generateQrCode(String content,String logoPath,OutputStream os){
        return generateQrCode(QR_CODE_WIDTH,QR_CODE_HEIGHT,content,logoPath,IMAGE_TYPE,os);
    }


    /**
     *
     * @param content 内容
     * @param os 输出流
     */
    public static boolean generateQrCode(String content,OutputStream os){
        return generateQrCode(QR_CODE_WIDTH,QR_CODE_HEIGHT,content,null,IMAGE_TYPE,os);
    }
}
